home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / dtm / test14.gl < prev    next >
Text File  |  1991-06-18  |  751b  |  34 lines

  1. Basetype E;
  2.  
  3. Atom
  4.    not :- E => E,
  5.    nand2 :- E & E => E,
  6.    and3 :- E & E & E => E,
  7.    or4 :- E & E & E & E => E,
  8.    and2 :- E & E => E,
  9.    or3 :- E & E & E => E,
  10.    div2 :- E => E;
  11.  
  12. Def
  13.    adc :- E & E & E => E & E;
  14.    adc [a,b,c] = [s, cout]
  15.       where
  16.      s = or4 [and3 [not a, not b, c], and3 [not a, b, not c],
  17.           and3 [a, not b, not c], and3 [a,b,c]];
  18.      cout = or3 [and2 [a,b], and2 [a,c], and2 [b,c]];
  19.       endwhere;
  20.  
  21. Mac
  22.    adder :- Int -: n -> E & E^n & E^n => E^n & E;
  23.    adder 0 [c, [],[]] = [[], c];
  24.    adder n [c, a:as, b:bs] = [s:ss, cout]
  25.       where
  26.          [s,v] = adc [a,b,c];
  27.          [ss, cout] = adder (n-1) [v, as, bs];
  28.       endwhere;
  29.  
  30. Def
  31.    adder4 :- E & E^4 & E^4 => E^4 & E;
  32.    adder4 [c, as,bs] = adder 4 [c, as,bs];
  33.  
  34.